/*

 */
package com.ohos.connent.accountcloud.dev.api;

import org.springframework.web.multipart.MultipartFile;

/**
 * 文件API接口，可参考com.ohos.connent.accountcloud.dev.core.util.file包下的工具类扩展更多需要的方法
 *
 **/
public interface DevFileApi {


    /* =========本地文件========= */

    /**
     * 上传文件返回Url
     *
     * @param file 文件
     **/
    String storageFileWithReturnUrlLocal(MultipartFile file);

    /**
     * 上传文件返回Id
     *
     * @param file 文件
     **/
    String storageFileWithReturnIdLocal(MultipartFile file);

    /* =========阿里云文件========= */

    /**
     * 上传文件返回Url
     *
     * @param file 文件
     **/
    String storageFileWithReturnUrlAliyun(MultipartFile file);

    /**
     * 上传文件返回Id
     *
     * @param file 文件
     **/
    String storageFileWithReturnIdAliyun(MultipartFile file);

    /* =========腾讯云件========= */

    /**
     * 上传文件返回Url
     *
     * @param file 文件
     **/
    String storageFileWithReturnUrlTencent(MultipartFile file);

    /**
     * 上传文件返回Id
     *
     * @param file 文件
     **/
    String storageFileWithReturnIdTencent(MultipartFile file);

    /* =========MINIO件========= */

    /**
     * 上传文件返回Url
     *
     * @param file 文件
     **/
    String storageFileWithReturnUrlMinio(MultipartFile file);

    /**
     * 上传文件返回Id
     *
     * @param file 文件
     **/
    String storageFileWithReturnIdMinio(MultipartFile file);


    /**
     * 上传文件返回Url
     *
     * @param file 文件
     **/
    String storageFileWithReturnUrlHUAWEI(MultipartFile file);

    /**
     * 上传文件返回Id
     *
     * @param file 文件
     **/
    String storageFileWithReturnIdHUAWEI(MultipartFile file);

    /**
     * 获取下载文件的授权URL
     *
     * @param id 文件ID
     * @param timeoutSeconds 超时时间默认 3600秒
     **/
    String getFileDownloadAuthUrlHUAWEI(String id, Long timeoutSeconds);

    /**
     * 获取上传文件的授权URL
     *
     * @param fileName 文件名称
     * @param timeoutSeconds 超时时间默认 3600秒
     **/
    String getFileUploadAuthUrlHUAWEI(String fileName, Long timeoutSeconds);

    /**
     * 判断文件是否上传成功
     *
     * @param id 文件id
     **/
    boolean isExistingFileHUAWEI(String id);

    /**
     * 判断文件是否上传成功
     *
     * @param id 文件id
     **/
    void storageFileHUAWEI(String id, MultipartFile file);

}
